import numpy as np
import csv
from math import sqrt

class CSVFile:

	csvfile=''

	def openCSVFile(self, filename, delimitador):
		self.csvfile = csv.reader(open(filename), delimiter=delimitador)
			

	def values(self):
		matrizXY=[]
		for i in self.csvfile:
			matrizXY.append( [ float(i[0]) ,  float(i[1]) ] )				
		return ( matrizXY )

class estatisticas:

	def media_aritmetica(self, valores):
		x = 0.
		y = 0.
		n = 0
		for i in valores:
			x = x + i[0]
			y = y + i[1]
			n = n + 1
		return(x/n , y/n)

	def varianciaXY(self, valores, medias):		
		varianciaX = 0.
		varianciaY = 0.
		n = 0
		for i in valores:			
			varianciaX = varianciaX + pow( i[0] - medias[0], 2)
			varianciaY = varianciaY + pow( i[1] - medias[1], 2)
			n = n + 1
		return(varianciaX/n, varianciaY/n)

	def covarianciaXY(self, valores, medias):
		covariancia = 0.
		n = 0
		for i in valores:
			covariancia = covariancia + ( i[0] - medias[0] ) * ( i[1] - medias[1] )
			n = n + 1
		return(covariancia/n)

	def correlacao_pearson(self, varianciaXY, covariancia):
		p = 0.
		p = (covariancia) / sqrt(varianciaXY[0] * varianciaXY[1])
		return p			

print
print "Calculo do coeficiente de correlacao de pearson\n"

delimitador = ','
file = CSVFile()
print "Digite o caminho completo do arquivo em formato CSV:"
path = raw_input()
print

file.openCSVFile(path, delimitador)
print "Arquivo aberto com sucesso\n"

matriz = file.values()

calculos = estatisticas()

mediasxy = calculos.media_aritmetica( matriz )
print "Media Aritmetica da Variavel X: %.2f" %mediasxy[0]
print "Media Aritmetica da Variavel Y: %.2f\n" %mediasxy[1]

varianciaxy =  calculos.varianciaXY( matriz, mediasxy )
print "Variancia da Variavel X: %.2f   Desvio Padrao: %.2f" %(varianciaxy[0], sqrt(varianciaxy[0]))
print "Variancia da Variavel Y: %.2f   Desvio Padrao: %.2f\n" %(varianciaxy[1], sqrt(varianciaxy[1]))

covarianciaxy = calculos.covarianciaXY( matriz, mediasxy )
print "Covariancia das Variaveis X e Y: %.2f\n" %covarianciaxy

pearson = calculos.correlacao_pearson( varianciaxy, covarianciaxy )
print "Coeficiente de Correlacao de Pearson %.2f\n" %pearson
